// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package org.achartengine.tools;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.achartengine.chart.AbstractChart;
import org.achartengine.chart.RoundChart;
import org.achartengine.chart.XYChart;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
// Referenced classes of package org.achartengine.tools:
// AbstractTool, PanListener
public class Pan extends AbstractTool
{
private List a;
private boolean b;
private boolean c;
public Pan(AbstractChart abstractchart)
{
super(abstractchart);
a = new ArrayList();
b = false;
c = false;
}
private double a(double ad[])
{
return Math.abs(ad[1] - ad[0]) / Math.abs(ad[3] - ad[2]);
}
private void a()
{
this;
JVM INSTR monitorenter ;
for (Iterator iterator = a.iterator(); iterator.hasNext(); ((PanListener)iterator.next()).panApplied()) { }
break MISSING_BLOCK_LABEL_43;
Exception exception;
exception;
throw exception;
this;
JVM INSTR monitorexit ;
}
public void addPanListener(PanListener panlistener)
{
this;
JVM INSTR monitorenter ;
a.add(panlistener);
this;
JVM INSTR monitorexit ;
return;
Exception exception;
exception;
throw exception;
}
public void apply(float f, float f1, float f2, float f3)
{
boolean flag;
boolean flag1;
boolean flag2;
boolean flag3;
double ad[];
boolean flag4;
XYChart xychart;
int j;
double ad1[];
flag = true;
flag1 = true;
flag2 = true;
flag3 = true;
if (!(mChart instanceof XYChart))
{
break MISSING_BLOCK_LABEL_540;
}
int i = mRenderer.getScalesCount();
ad = mRenderer.getPanLimits();
double ad2[];
if (ad != null && ad.length == 4)
{
flag4 = true;
} else
{
flag4 = false;
}
xychart = (XYChart)mChart;
j = 0;
_L3:
if (j >= i)
{
break MISSING_BLOCK_LABEL_580;
}
ad1 = getRange(j);
ad2 = xychart.getCalcRange(j);
if (b && c && (ad1[0] == ad1[1] && ad2[0] == ad2[1] || ad1[2] == ad1[3] && ad2[2] == ad2[3]))
{
return;
}
checkRange(ad1, j);
double ad3[] = xychart.toRealPoint(f, f1, j);
double ad4[] = xychart.toRealPoint(f2, f3, j);
double d = ad3[0] - ad4[0];
double d1 = ad3[1] - ad4[1];
double d2 = a(ad1);
RoundChart roundchart;
double d3;
double d4;
boolean flag5;
boolean flag6;
if (xychart.isVertical(mRenderer))
{
double d5 = d2 * -d1;
d4 = d / d2;
d3 = d5;
} else
{
d3 = d;
d4 = d1;
}
if (mRenderer.isPanXEnabled())
{
if (ad != null)
{
if (flag2)
{
boolean flag10;
if (ad[0] <= d3 + ad1[0])
{
flag10 = true;
} else
{
flag10 = false;
}
flag2 = flag10;
}
if (flag3)
{
boolean flag9;
if (ad[1] >= d3 + ad1[1])
{
flag9 = true;
} else
{
flag9 = false;
}
flag3 = flag9;
}
}
if (!flag4 || flag2 && flag3)
{
setXRange(d3 + ad1[0], d3 + ad1[1], j);
b = false;
} else
{
b = true;
}
}
if (!mRenderer.isPanYEnabled())
{
break MISSING_BLOCK_LABEL_529;
}
if (ad != null)
{
if (flag1)
{
boolean flag8;
if (ad[2] <= d4 + ad1[2])
{
flag8 = true;
} else
{
flag8 = false;
}
flag1 = flag8;
}
if (flag)
{
boolean flag7;
if (ad[3] >= d4 + ad1[3])
{
flag7 = true;
} else
{
flag7 = false;
}
flag = flag7;
}
}
if (flag4 && (!flag1 || !flag)) goto _L2; else goto _L1
_L1:
setYRange(d4 + ad1[2], d4 + ad1[3], j);
c = false;
flag5 = flag1;
flag6 = flag;
_L4:
j++;
flag1 = flag5;
flag = flag6;
goto _L3
_L2:
c = true;
flag5 = flag1;
flag6 = flag;
goto _L4
roundchart = (RoundChart)mChart;
roundchart.setCenterX(roundchart.getCenterX() + (int)(f2 - f));
roundchart.setCenterY(roundchart.getCenterY() + (int)(f3 - f1));
a();
return;
}
public void removePanListener(PanListener panlistener)
{
this;
JVM INSTR monitorenter ;
a.remove(panlistener);
this;
JVM INSTR monitorexit ;
return;
Exception exception;
exception;
throw exception;
}
}